package com.dragon.modules.yuegou.enums;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 支付类型
 *
 * @author 程泽
 *
 */
public enum PayType {
    /**
     * 悦币
     */
    YUECOIN(0, "悦币"),

    /**
     * 悦卡
     */
    YUECARD(1,"悦卡"),

    /**
     * 微信
     */
    WEICHAT(2,"微信"),

    /**
     * 支付宝
     */
    ALIPAY(3,"支付宝"),

    /**
     * 积分
     */
    POINTS(4,"积分"),

    /**
     * 微信+积分
     */
    WX_POINTS(5,"微信+积分"),

    /**
     * 支付宝+积分
     */
    ALI_POINTS(6,"支付宝+积分"),

    /**
     * 商户实体卡消费
     */
    ENTITY(7,"商户实体卡消费"),

    /**
     * 微信+积分
     */
    WX_YUECARD(8,"微信+悦卡"),

    /**
     * 支付宝+积分
     */
    ALI_YUECARD(9,"支付宝+悦卡");

    /**
     * 枚举标识
     */
    private final Integer code;

    /**
     * 别名
     */
    private final String alias;

    private PayType(Integer code, String alias) {
        this.code = code;
        this.alias = alias;
    }

    public Integer getValue() {
        return code;
    }

    /**
     * 枚举标识
     *
     * @return code
     */
    public Integer getCode() {
        return code;
    }

    /**
     * 别名
     *
     * @return alias
     */
    public String getAlias() {
        return alias;
    }

    /**
     * 把code转化为费用类型枚举
     *
     * @param code 代码
     * @return
     */
    public static PayType from(Integer code) {
        if (code == null) {
            return null;
        }
        return CODE_MAP.get(code);
    }

    /**
     * Code Map for MsgType
     */
    private static final Map<Integer, PayType> CODE_MAP = Stream.of(PayType.values())
            .collect(Collectors.toMap(PayType::getCode, e -> e));
}
